<template>
  <div  ref="chartDom"></div>
</template>

<script>
import * as echarts from 'echarts'
import debounce from 'lodash/debounce'
import { addListener, removeListener } from 'resize-detector'

export default {
  props: {
    option: {
      type: Object,
      default: () => {
      }
    }
  },
  watch: {
    // option(val) {
    //   this.chart.setOption(val);
    // },
    option: {
      handler(val) {
        this.chart.setOption(val)
      },
      deep: true
    }
  },
  created() {
    this.resize = debounce(this.resize, 300)
  },
  mounted() {
    this.renderChart()
    addListener(this.$refs.chartDom, this.resize)
  },
  beforeDestroy() {
    removeListener(this.$refs.chartDom, this.resize)
    this.chart.dispose()
    this.chart = null
  },
  methods: {
    resize() {
      this.chart.resize()
    },
    renderChart() {
      this.chart = echarts.init(this.$refs.chartDom)
      this.chart.setOption(this.option)
    }
  }
}
</script>
<style>
</style>
